Agent.js ➔ describe(ꞌAgentꞌ)   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 215

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 215
rs 8.2857

6 Functions

Rating   Name   Duplication   Size   Complexity  
A Agent.js ➔ ... ➔ it(ꞌCreate with JSONꞌ) 0 61 1
B Agent.js ➔ ... ➔ it(ꞌtoJSONꞌ) 0 45 1
A Agent.js ➔ ... ➔ it(ꞌCreate with mixed dataꞌ) 0 61 1
B Agent.js ➔ ... ➔ it(ꞌBuildꞌ) 0 30 1
A Agent.js ➔ ... ➔ it(ꞌconstructor does not copy instancesꞌ) 0 5 1
A Agent.js ➔ ... ➔ it(ꞌCreate plainꞌ) 0 4 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
var assert = require('chai').assert,
2
    GedcomX = require('../../');
3
4
describe('Agent', function(){
5
  
6
  it('Create plain', function(){
7
    assert.instanceOf(new GedcomX.Agent(), GedcomX.Agent, 'An instance of Agent is not returned when calling the constructor with new.');
8
    assert.instanceOf(GedcomX.Agent(), GedcomX.Agent, 'An instance of Agent is not returned when calling the constructor without new.');
9
  });
10
  
11
  it('Create with JSON', function(){
12
    var agent = GedcomX.Agent({
13
      id: 'agent',
14
      identifiers: {
15
        $: 'ident'
16
      },
17
      names: [
18
        {
19
          lang: 'en',
20
          value: 'Name'
21
        }  
22
      ],
23
      homepage: {
24
        resource: 'http://homepage'
25
      },
26
      openid: {
27
        resource: 'http://openid'
28
      },
29
      accounts: [
30
        {
31
          accountName: 'jimbo'
32
        }  
33
      ],
34
      emails: [
35
        {
36
          resource: 'http://email'
37
        }  
38
      ],
39
      phones: [
40
        {
41
          resource: 'http://phone'
42
        }  
43
      ],
44
      addresses: [
45
        {
46
          value: 'big long address',
47
          postalCode: '123456'
48
        }  
49
      ],
50
      person: {
51
        resource: 'http://person'
52
      }
53
    });
54
    assert.equal(agent.getId(), 'agent');
55
    assert.equal(agent.getIdentifiers().identifiers.$, 'ident');
56
    assert.equal(agent.getNames().length, 1);
57
    assert.equal(agent.getNames()[0].getLang(), 'en');
58
    assert.equal(agent.getNames()[0].getValue(), 'Name');
59
    assert.equal(agent.getHomepage().getResource(), 'http://homepage');
60
    assert.equal(agent.getOpenid().getResource(), 'http://openid');
61
    assert.equal(agent.getAccounts().length, 1);
62
    assert.equal(agent.getAccounts()[0].getAccountName(), 'jimbo');
63
    assert.equal(agent.getEmails().length, 1);
64
    assert.equal(agent.getEmails()[0].getResource(), 'http://email');
65
    assert.equal(agent.getPhones().length, 1);
66
    assert.equal(agent.getPhones()[0].getResource(), 'http://phone');
67
    assert.equal(agent.getAddresses().length, 1);
68
    assert.equal(agent.getAddresses()[0].getValue(), 'big long address');
69
    assert.equal(agent.getAddresses()[0].getPostalCode(), '123456');
70
    assert.equal(agent.getPerson().getResource(), 'http://person');
71
  });
72
  
73
  it('Create with mixed data', function(){
74
    var agent = GedcomX.Agent({
75
      id: 'agent',
76
      identifiers: GedcomX.Identifiers({
77
        $: 'ident'
78
      }),
79
      names: [
80
        GedcomX.TextValue({
81
          lang: 'en',
82
          value: 'Name'
83
        })
84
      ],
85
      homepage: GedcomX.ResourceReference({
86
        resource: 'http://homepage'
87
      }),
88
      openid: GedcomX.ResourceReference({
89
        resource: 'http://openid'
90
      }),
91
      accounts: [
92
        GedcomX.OnlineAccount({
93
          accountName: 'jimbo'
94
        })
95
      ],
96
      emails: [
97
        GedcomX.ResourceReference({
98
          resource: 'http://email'
99
        })
100
      ],
101
      phones: [
102
        GedcomX.ResourceReference({
103
          resource: 'http://phone'
104
        })
105
      ],
106
      addresses: [
107
        GedcomX.Address({
108
          value: 'big long address',
109
          postalCode: '123456'
110
        })
111
      ],
112
      person: GedcomX.ResourceReference({
113
        resource: 'http://person'
114
      })
115
    });
116
    assert.equal(agent.getId(), 'agent');
117
    assert.equal(agent.getIdentifiers().identifiers.$, 'ident');
118
    assert.equal(agent.getNames().length, 1);
119
    assert.equal(agent.getNames()[0].getLang(), 'en');
120
    assert.equal(agent.getNames()[0].getValue(), 'Name');
121
    assert.equal(agent.getHomepage().getResource(), 'http://homepage');
122
    assert.equal(agent.getOpenid().getResource(), 'http://openid');
123
    assert.equal(agent.getAccounts().length, 1);
124
    assert.equal(agent.getAccounts()[0].getAccountName(), 'jimbo');
125
    assert.equal(agent.getEmails().length, 1);
126
    assert.equal(agent.getEmails()[0].getResource(), 'http://email');
127
    assert.equal(agent.getPhones().length, 1);
128
    assert.equal(agent.getPhones()[0].getResource(), 'http://phone');
129
    assert.equal(agent.getAddresses().length, 1);
130
    assert.equal(agent.getAddresses()[0].getValue(), 'big long address');
131
    assert.equal(agent.getAddresses()[0].getPostalCode(), '123456');
132
    assert.equal(agent.getPerson().getResource(), 'http://person');
133
  });
134
  
135
  it('Build', function(){
136
    var agent = GedcomX.Agent()
137
      .setId('agent')
138
      .setIdentifiers(GedcomX.Identifiers({$:'ident'}))
139
      .addName(GedcomX.TextValue().setLang('en').setValue('Name'))
140
      .setHomepage(GedcomX.ResourceReference().setResource('http://homepage'))
141
      .setOpenid(GedcomX.ResourceReference().setResource('http://openid'))
142
      .addAccount(GedcomX.OnlineAccount().setAccountName('jimbo'))
143
      .addEmail(GedcomX.ResourceReference().setResource('http://email'))
144
      .addPhone(GedcomX.ResourceReference().setResource('http://phone'))
145
      .addAddress(GedcomX.Address().setValue('big long address').setPostalCode('123456'))
146
      .setPerson(GedcomX.ResourceReference().setResource('http://person'));
147
    assert.equal(agent.getId(), 'agent');
148
    assert.equal(agent.getIdentifiers().identifiers.$, 'ident');
149
    assert.equal(agent.getNames().length, 1);
150
    assert.equal(agent.getNames()[0].getLang(), 'en');
151
    assert.equal(agent.getNames()[0].getValue(), 'Name');
152
    assert.equal(agent.getHomepage().getResource(), 'http://homepage');
153
    assert.equal(agent.getOpenid().getResource(), 'http://openid');
154
    assert.equal(agent.getAccounts().length, 1);
155
    assert.equal(agent.getAccounts()[0].getAccountName(), 'jimbo');
156
    assert.equal(agent.getEmails().length, 1);
157
    assert.equal(agent.getEmails()[0].getResource(), 'http://email');
158
    assert.equal(agent.getPhones().length, 1);
159
    assert.equal(agent.getPhones()[0].getResource(), 'http://phone');
160
    assert.equal(agent.getAddresses().length, 1);
161
    assert.equal(agent.getAddresses()[0].getValue(), 'big long address');
162
    assert.equal(agent.getAddresses()[0].getPostalCode(), '123456');
163
    assert.equal(agent.getPerson().getResource(), 'http://person');
164
  });
165
  
166
  it('toJSON', function(){
167
    var data = {
168
      id: 'agent',
169
      identifiers: {
170
        $: 'ident'
171
      },
172
      names: [
173
        {
174
          lang: 'en',
175
          value: 'Name'
176
        }  
177
      ],
178
      homepage: {
179
        resource: 'http://homepage'
180
      },
181
      openid: {
182
        resource: 'http://openid'
183
      },
184
      accounts: [
185
        {
186
          accountName: 'jimbo'
187
        }  
188
      ],
189
      emails: [
190
        {
191
          resource: 'http://email'
192
        }  
193
      ],
194
      phones: [
195
        {
196
          resource: 'http://phone'
197
        }  
198
      ],
199
      addresses: [
200
        {
201
          value: 'big long address',
202
          postalCode: '123456'
203
        }  
204
      ],
205
      person: {
206
        resource: 'http://person'
207
      }
208
    }, agent = GedcomX.Agent(data);
209
    assert.deepEqual(agent.toJSON(), data);
210
  });
211
  
212
  it('constructor does not copy instances', function(){
213
    var obj1 = GedcomX.Agent();
214
    var obj2 = GedcomX.Agent(obj1);
215
    assert.strictEqual(obj1, obj2);
216
  });
217
  
218
});